package org.asiainfo.flowable.service;

import org.asiainfo.common.flowable.core.domain.ProcessQuery;
import org.asiainfo.common.mybatis.stream.core.page.PageQuery;
import org.asiainfo.common.mybatis.stream.core.page.TableDataInfo;
import org.asiainfo.flowable.domain.vo.WfDeployVo;
import org.asiainfo.flowable.domain.vo.WfFormVo;

import java.util.Collection;

/**
 * 流程部署Service接口
 *
 * @author dotor-ww
 */
public interface WfDeployService {

    /**
     * 查询流程部署列表
     *
     * @param processQuery 流程查询实体对象
     * @param pageQuery    分页
     * @return 流程部署列表
     */
    TableDataInfo<WfDeployVo> queryPageList(ProcessQuery processQuery, PageQuery pageQuery);

    /**
     * 查询流程部署版本列表
     *
     * @param processKey 流程定义key
     * @param pageQuery  分页
     * @return 流程部署版本列表
     */
    TableDataInfo<WfDeployVo> publishList(String processKey, PageQuery pageQuery);

    /**
     * 获取流程定义XML
     *
     * @param definitionId 流程定义ID
     * @return 流程定义XML
     */
    String getBpmnXml(String definitionId);

    /**
     * 删除流程部署
     *
     * @param deployIds 流程部署ID集合
     */
    void deleteByDeployIds(Collection<String> deployIds);

    /**
     * 激活/挂起流程
     *
     * @param state        状态(1:激活 2:挂起)
     * @param definitionId 流程定义ID
     */
    void changeDeployState(Integer state, String definitionId);
}
